package com.chaodev.base.utils.security;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

/**
 * base64加解密
 * @author zhangb
 */
public class Base64Helper {
    /**
     * 字符集默认UTF-8
     */
    private static final Charset CHARSET_TYPE= StandardCharsets.UTF_8;

    /**
     * 加密
     * @param data 字节数组明文
     * @return 字符串密文
     */
    public static String encodeBase64(byte[] data){
        byte[] encodeByte= Base64.getEncoder().encode(data);
        return new String(encodeByte,CHARSET_TYPE);
    }

    /**
     * 加密
     * @param data 明文
     * @return 字符串密文
     */
    public static String encodeBase64(String data){
        byte[] byteData=data.getBytes(CHARSET_TYPE);
        return encodeBase64(byteData);
    }

    /**
     * 加密
     * @param data 明文
     * @return 字节数组密文
     */
    public static byte[] encodeBase64Byte(String data){
        byte[] byteData=data.getBytes(CHARSET_TYPE);
        return Base64.getEncoder().encode(byteData);
    }

    /**
     * 解密
     * @param data 字节数组密文
     * @return 字符串明文
     */
    public static String decodeBase64(byte[] data){
        byte[] byteData=Base64.getDecoder().decode(data);
        return new String(byteData,CHARSET_TYPE);
    }

    /**
     * 解密
     * @param data 密文
     * @return 字符串明文
     */
    public static String decodeBase64(String data){
        byte[] byteData=data.getBytes(CHARSET_TYPE);
        return decodeBase64(byteData);
    }

    /**
     * 解密
     * @param data 密文
     * @return  字节数组明文
     */
    public static byte[] decodeBase64Byte(String data){
        byte[] byteData=data.getBytes(CHARSET_TYPE);
        return Base64.getDecoder().decode(data);
    }

    /**
     * 解密
     * @param data 密文
     * @return  字节数组明文
     */
    public static byte[] decodeBase64Byte(byte[] data){
        return Base64.getDecoder().decode(data);
    }
}
